import request from "@/utils/request";
import { AxiosPromise } from "axios";
import {
  ModelList,
  ModelInfo,
  ModelStatus,
  ModelAgent,
  ModelTasks,
  ModelTaskDetail,
  ModelOperasConfig,
  ModelIds,
  ModelConcat,
} from "./types";

// 剧目管理 - 查询列表
export function operasSearch(data: ModelList): AxiosPromise<Array<any>> {
  return request({
    url: `/api/operation/Operas/search`,
    method: "post",
    data,
  });
}

// 剧目管理 - 获取所有标签
export function operasTags(): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/tags`,
    method: "get",
  });
}

// 剧目管理 - 新增剧目
export function addOperas(data: ModelInfo): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas`,
    method: "post",
    data,
  });
}

// 剧目管理 - 更新剧目
export function updateOperas(data: ModelInfo): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data.id}`,
    method: "put",
    data,
  });
}

// 剧目管理 - 剧目详情
export function operasDetail(data: number): AxiosPromise<ModelInfo> {
  return request({
    url: `/api/operation/Operas/${data}`,
    method: "get",
  });
}

// 剧目管理 - 小程序显示
export function showStatus(data: ModelStatus): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data.id}/show_status`,
    method: "patch",
    params: { showStatus: data?.showStatus },
  });
}

// 剧目管理 - 授权分销商
export function agentDistributor(data: ModelAgent): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/agent`, // ?operaId=${data.operaId}
    method: "post",
    data,
  });
}

// 剧目管理 - 取消授权分销商
export function deleteAgentDistributor(data: ModelAgent): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/agent?operaId=${data.operaId}`,
    method: "delete",
    data: data.agentIds,
  });
}

// 剧目管理 - 获取媒资文件列表
export function mediasList(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/Vods/medias?operaId=${data}`,
    method: "get",
  });
}

// 剧目管理 - 同步刷新媒资文件列表
export function syncMediasList(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/Vods/medias/sync?operaId=${data}`,
    method: "post",
  });
}

// 剧目管理 - 媒资文件，获取微信、抖音列表
export function uploadTasksList(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/upload/tasks?operaId=${data}`,
    method: "get",
  });
}

// 剧目管理 - 开始同步云点播文件
export function syncTasks(data: ModelTasks): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/upload/tasks`,
    method: "post",
    data,
  });
}

// 剧目管理 - 删除媒体文件
export function deleteMedias(data: string): AxiosPromise<any> {
  return request({
    url: `/api/operation/Vods/medias?fileId=${data}`,
    method: "delete",
  });
}

// 剧目管理 - 媒资文件任务详情
export function taskDetail(data: ModelTaskDetail): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/upload/task-details`,
    method: "get",
    params: data,
  });
}

// 剧目管理 - 剧目提审任务详情
export function reviewDetail(data: ModelTaskDetail): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/review/details`,
    method: "get",
    params: data,
  });
}

// 剧目管理 - 提审剧目获取主体小程序
export function reviewApps(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data}/review/apps`,
    method: "post",
  });
}

// 剧目管理 - 提审剧目
export function reviewOperas(data: ModelOperasConfig): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data.id}/review`,
    method: "post",
    data: data.params,
  });
}

// 剧目管理 - 设置剧目海报
export function reviewCover(data: any): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data?.id}/cover`,
    method: "put",
    data: data.params,
  });
}

// 剧目管理 - 设置剧目播放授权材料
export function setOperasLicense(data: any): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/${data}/license`,
    method: "put",
    data: data.params,
  });
}

// 剧目管理 - 获取剧目播放授权材料
export function getOperasLicense(data: number) {
  return request({
    url: `/api/operation/Operas/${data}/license`,
    method: "get",
    responseType: "blob",
  });
}

// 剧目管理 - 获取剧目已授权的分销商
export function getAgentOperas(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/Operas/agent?operaId=${data}`,
    method: "get",
  });
}

// 剧目管理 - 获取剧目审核失败原因文件
export function getMaterial(data: ModelIds) {
  return request({
    url: `/api/Wx/material`,
    method: "get",
    params: data,
    responseType: "blob",
  });
}

// 剧目管理 - 获取剧目审核失败原因图片
export function getEvidences(data: ModelIds): AxiosPromise<any> {
  return request({
    url: `/api/Wx/media/audit/evidences`,
    method: "get",
    params: data,
  });
}

// 剧目管理 - 设置剧目拼剧
export function setConcatOperas(data: ModelConcat) {
  return request({
    url: `/api/operation/operas/concat`,
    method: "post",
    data,
  });
}

// 剧目管理 - 获取剧目拼剧
export function getConcatOperas(data: number): AxiosPromise<any> {
  return request({
    url: `/api/operation/operas/concat?operaId=${data}`,
    method: "get",
  });
}
